package ups.apps.negocio;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import ups.apps.model.Cuenta;
import ups.apps.model.Movimiento;
import ups.apps.model.Tipomovimiento;

public class MovimientoDAO {
	@Inject
	private EntityManager em;

		public void transfer(String cuenta, double valor, long tipo, String cedula, String cliente, long cue_origen)
		{
			System.out.println("Realizando transferencia");
			em.getTransaction().begin(); //se inicia la transaccion
			em.createNamedQuery("ingreso_transferencia").setParameter("cuenta", cuenta).setParameter("valor", valor).setParameter("tipo", tipo).setParameter("cedula", cedula).setParameter("cliente", cliente).setParameter("cue_orgen", cue_origen);   //manda a insertar
			//em.getTransaction().commit(); //manda un commit a la base
		}
		
		public void transferir(Movimiento m){
			Query q=em.createNativeQuery("call ingreso_transferencia(?1,?2,?3,?4,?5,?6);");
			q.setParameter(1, m.getCuenta().getCueId());
			q.setParameter(2, m.getMovMonto());
			q.setParameter(3, m.getTipomovimiento().getTmoId());
			q.setParameter(4, m.getMovCedula());
			q.setParameter(5, m.getMovCliente());
			q.setParameter(6, m.getMovCuenta());
			
			q.executeUpdate();
		}
		
		public Movimiento saldo(String c)
		{
			System.out.println("leyendo");
			String sql = "select m.*"//c.cue_id, c.cue_estado , c.cue_numero, cl.cli_nombres, u.usr_usuario
					+ "from movimiento m, cuenta c, cliente cl, usuario u "
					+ "where u.usr_id= " + c
					+ "and   u.usr_id = cl.usr_id "
					+ "and   c.cli_id = cl.cli_id "
					+ "and   m.cue_id = c.cue_id "
					+ "and   c.cue_estado = 'Act';";
			Query q = em.createNativeQuery(sql, Movimiento.class);
			
			Movimiento m=em.find(Movimiento.class, c);
			return m;
		}
}
